package com.cy.pj.sys.service.impl;

import com.cy.pj.common.annotation.RequiredLog;
import com.cy.pj.common.exception.ServiceException;
import com.cy.pj.common.pojo.PageObject;
import com.cy.pj.sys.dao.SysLogDao;
import com.cy.pj.sys.pojo.SysLog;
import com.cy.pj.sys.service.SysLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//业务类
@Service
public class SysLogServiceImpl implements SysLogService {
    @Autowired
    private SysLogDao sysLogDao;//数据层对象的引用

    @Override
    public void saveObject(SysLog entity) {
        String tName=Thread.currentThread().getName();
        System.out.println("SysLogServiceImpl.saveObject->thread.name->"+ tName);
        try{Thread.sleep(5000);}catch (Exception e){}
        sysLogDao.insertObject(entity);
    }

    @RequiredLog("日志删除")
    @Override
    public int deleteObjects(Integer... ids) {
        //1.参数校验
        if(ids==null||ids.length==0)
            throw new IllegalArgumentException("必须提供正确的ID值");
        //2.基于id删除日志
        int rows=sysLogDao.deleteObjects(ids);
        //3.校验结果并返回
        if(rows==0)
            throw new ServiceException("记录可能已经不存在");
        return rows;
    }

    @RequiredLog("日志查询")//表示这个方法运行时执行加一个日志功能，为什么要给这个方法加日志呢，又谁来决定
    //看看这个注解方法是不是切入点方法，要在切面里定义切入点
    @Override
    public PageObject<SysLog> findPageObjectsss(String username, Integer pageCurrent) {
        String tName=Thread.currentThread().getName();
        System.out.println("SysLogServiceImpl.saveObject->thread.name->"+ tName);

        if(pageCurrent==null||pageCurrent<1)throw new IllegalArgumentException("当前页码不正确");
        //1.参数校验

        int rowCount=sysLogDao.getRowCount(username);
        if (rowCount==0) throw new ServiceException("没有找到对应记录");
        //2.查总记录数

        int pageSize=6;
        int startIndex=(pageCurrent -1)*pageSize;//计算起始位置
        List<SysLog> records=sysLogDao.findPageObjects(username,startIndex,pageSize);
        //3.查当前页记录

//        PageObject<SysLog> po=new PageObject<>();//4.封装查询结果并返回
//        po.setRowCount(rowCount);//总记录条数
//        po.setRecords(records);//当前页记录
//        po.setPageCurrent(pageCurrent);//当前页码值
//        po.setPageSize(pageSize);//每页条数
//        int pageCount=rowCount/pageSize;
//        if(rowCount%pageSize!=0)pageCount++;
//        po.setPageCount(pageCount);//总页数
    return new PageObject<>(rowCount,records,pageCurrent,pageSize);
    }
}
